package com.ck.company.service;

import com.ck.exception.ServiceException;
import com.ck.model.common.ProgramPutin;

import javax.servlet.http.HttpServletRequest;

/**
 * 商节目投放设置
 *
 * @author linqiang
 * @date 2018-06-20 18:25
 */
public interface CpProgramPutinService {

    /**
     * 新增投放节目设置（选择终端机器码）
     *
     * @param programId       节目ID
     * @param putinLevel      投放级别（1普通计划，2插播计划）
     * @param putinStartTime  投放开始时间
     * @param putinEndTime    投放结束时间
     * @param putinDeviceMacs 投放终端机器码(多个英文逗号隔开)
     * @param request
     * @return 投放设置成功返回true, 反之false
     */
    ProgramPutin putinByDeviceMac(Long programId, Integer putinLevel, Long putinStartTime, Long putinEndTime, String putinDeviceMacs,
                                  HttpServletRequest request);

    /**
     * 新增投放节目设置（选择终端机器码）
     *
     * @param programId        节目ID
     * @param putinLevel       投放级别（1普通计划，2插播计划）
     * @param putinStartTime   投放开始时间
     * @param putinEndTime     投放结束时间
     * @param putinDeviceCodes 投放终端机器码(多个英文逗号隔开)
     * @param request
     * @return 投放设置成功返回true, 反之false
     */
    ProgramPutin putinByDeviceCode(Long programId, Integer putinLevel, Long putinStartTime, Long putinEndTime, String putinDeviceCodes,
                                   HttpServletRequest request);

    /**
     * 新增投放节目设置（选择终端组）
     *
     * @param programId            节目ID
     * @param putinLevel           投放级别（1普通计划，2插播计划）
     * @param putinStartTime       投放开始时间
     * @param putinEndTime         投放结束时间
     * @param putinDeviceGroupId   投放终端组ID(多个英文逗号隔开)
     * @param putinDeviceGroupName 投放终端组名称(多个英文逗号隔开)
     * @param request              请求
     * @return ProgramPutin
     * @throws ServiceException
     */
    ProgramPutin putinByDeviceGroup(Long programId, Integer putinLevel, Long putinStartTime, Long putinEndTime, String putinDeviceGroupId,
                                    String putinDeviceGroupName, HttpServletRequest request) throws ServiceException;

    /**
     * 更新投放节目设置（选择终端机器码）
     *
     * @param programPutinId       节目投放ID
     * @param putinLevel           投放级别（1普通计划，2插播计划）
     * @param startTimeL           投放开始时间
     * @param endTimeL             投放结束时间
     * @param putinDeviceGroupId   投放终端组ID(多个英文逗号隔开)
     * @param putinDeviceGroupName 投放终端组名称(多个英文逗号隔开)
     * @param request              请求
     * @return 影响行数
     * @throws ServiceException
     */
    int updatePutinByDeviceGroup(Long programPutinId, Integer putinLevel, Long startTimeL, Long endTimeL, String putinDeviceGroupId,
                                 String putinDeviceGroupName, HttpServletRequest request) throws ServiceException;

    /**
     * 更新投放节目设置（选择终端mac）
     *
     * @param programPutinId   节目ID
     * @param putinLevel       投放级别（1普通计划，2插播计划）
     * @param startTimeL       投放开始时间
     * @param endTimeL         投放结束时间
     * @param putinDeviceCodes 投放终端(多个英文逗号隔开)
     * @param request
     * @return 投放设置成功返回true, 反之false
     * @throws ServiceException
     */
    int updatePutinByDeviceCode(Long programPutinId, Integer putinLevel, Long startTimeL, Long endTimeL, String putinDeviceCodes,
                                HttpServletRequest request) throws ServiceException;
}
